#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 0x3f3f3f3f
#define lc (o<<1)
#define rc (o<<1|1)
using namespace std;
typedef long long LL;
typedef double db;
inline int read()
{
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); }
	while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+ch-'0'; ch=getchar(); }
	return x*f;
}
const int MAXN=1e5+10;
int n,m;
struct Seg_T
{
	db maxv[MAXN*3];
	int cnt[MAXN*3];
	int cal(int o,int l,int r,db v)
	{
		if(l==r)return maxv[o]>v;
		int mid=(l+r)>>1;
		if(maxv[lc]<=v)return cal(rc,mid+1,r,v);
		return cal(lc,l,mid,v)+cnt[o]-cnt[lc];
	}
	void push_up(int o,int l,int r)
	{
		maxv[o]=max(maxv[lc],maxv[rc]);
		int mid=(l+r)>>1;
		cnt[o]=cnt[lc]+cal(rc,mid+1,r,maxv[lc]);
		return;
	}
	void update(int o,int l,int r,db v,int k)
	{
		if(l==r)
		{
			maxv[o]=v;
			cnt[o]=1;
			return;
		}
		int mid=(l+r)>>1;
		if(k<=mid)update(lc,l,mid,v,k);
		else update(rc,mid+1,r,v,k);
		push_up(o,l,r);
		return;
	}
}T1;
int main()
{
	n=read();m=read();
	while(m--)
	{
		int x=read(),y=read();
		T1.update(1,1,n,(db)y/x,x);
		printf("%d\n",T1.cnt[1]);
	}
	return 0;
}
